gusucode.com > VC 达内MFC例子集源码-源码程序 > VC 达内MFC例子集源码-源码程序/code/20110104/day06.txt

    一 MFC文档视图程序
 
  1 MFC文档视图的各个部分
  
    1.1 CWinApp 应用程序类,应用程序的
       启动/消息处理等。类中还维护了
       一个文档管理器。
    1.2 CFrameWnd 框架窗口类,提供了窗
       口的容器,可以放置菜单/工具栏/
       状态栏/视图等等窗口。
    1.3 CView 视图类,提供了数据的显示
       以及和用户交互操作。
    1.4 CDocument 文档类,提供数据的维
       护等操作。
    1.5 CDocTemplate 文档模板类,提供了
       对文档CDocument类的管理。
        CSingleDocTemplate 单文档
        CMultiDocTemplate  多文档
    1.6 CDocManager 文档管理器,提供了
       文档模板的管理
       
  2 各部分的关系
  
    2.1 CWinApp中维护一个文档管理器
       CDocManager * m_pDocManager;
       和主窗口m_pMainWnd.
    2.2 文档管理器维护了一个文档模板的
       链表 
    2.3 文档模板维护了文档对象.
     CSingleDocTemplate: 维护了一个文档.
     CMultiDocTemplate: 维护了一个文档的链表
    2.4 CDocument文档当中,维护了一个
      视图链表
    2.5 CFrameWnd框架窗口,主要维护了
      当前的活动视图m_pAcivetView;
    2.6 CView视图,维护一个当前的视图
      可以显示的文档指针m_pDocument;
  
  3 创建过程
    3.1 CWinApp创建应用程序
    3.2 使用文档模板中的CreateNewDocument
        创建文档.
    3.3 使用文档模板中的CreateNewFrame
        创建框架窗口
    3.4 在框架窗口WM_CREATE消息中,使用
        CreateView创建视图
  
  4 命令消息处理过程
    4.1 CView视图类
    4.2 CDocument文档类
    4.3 CFrameWnd框架窗口类
    4.4 CWinApp应用程序类
  
二 MFC绘图

  1 MFC绘图相关
    CDC - 父类是CObject, 封装了HDC句柄
       及大部分的关于绘图Win32 API。   
    CWindowDC - 父类CDC,是窗口的DC。是
     以窗口的左上角和大小进行绘图的DC。
    CClientDC - 父类CDC,是客户区的DC。
     是以窗口的客户区左上角和大小进行
     绘图的DC。
    CPaintDC - 父类是CDC,是客户区的DC。
     是以客户区的大小绘图。但是,它只能
     使用在WM_PAINT消息中。
    CMetaFileDC - 父类是CDC,以WMF或者
     EMF文件方式进行绘图。
    
   2 DC的使用
     2.1 CDC的使用
       2.1.1 创建或获取DC
         创建 CDC::CreateDC( 
          LPCTSTR lpszDriverName,  
          LPCTSTR lpszDeviceName, 
          LPCTSTR lpszOutput, 
          const void* lpInitData );
        lpszDriverName - 设备类型, 
          显示器"DISPLAY",打印机"WINSPOOL"
       2.1.2 绘图
       2.1.3 释放DC
         释放 CDC::DeleteDC
    2.2 窗口DC CWindowDC
       是以窗口的边框的左上角为原点,
       绘制区域是整个窗口包括边框.
    2.3 客户区DC CClientDC
       是以窗口内的客户区左上角为原点,
       绘制区域只是在窗户的客户区之内.
       注意:也可以使用CWnd提供的GetDC
       函数获取客户区DC
          CDC * pDC = GetDC( );
          ReleaseDC( pDC );
    2.4 WM_PAINT消息DC - CPaintDC
      CPaintDC的构造和析构函数中,分别
      封装了BeginPaint和EndPaint处理,
      所以只能使用在WM_PAINT消息中.
		2.5 元文件DC - CMetaFileDC
		  2.5.1 创建DC
		     Create/CreateEnhanced
		  2.5.2 绘图
		  2.5.3 关闭DC,获取HEMTAFILE句柄
		     Close/CloseEnhanced
		  2.5.4 显示绘图
		     可显示DC的PlayMetaFile
		  2.5.5 删除句柄
		     DeleteMetaFile

三 MFC绘图对象

  1 GDI绘图对象(GDI Object)
    画笔(HPEN)画刷(HBRUSH)字体(HFONT) 
    位图(HBIMAP) 调色板(HPALLETE)
    区域(HRGN)
  
  2 MFC相关类
    CPen - 画笔
    CBrush - 画刷
    CFont - 字体
    CBitmap - 位图
    CPallete - 调色板
    CRgn - 区域
    
  3 画笔CPen
    3.1 创建画笔
    3.2 选择画笔
    3.3 绘图
    3.4 选出画笔
  4 画刷CBrush
	  4.1 创建画刷
    4.2 选择画刷
    4.3 绘图
    4.4 选出画刷
  5 字体CFont
	  4.1 创建字体
    4.2 选择字体
    4.3 输出文字
    4.4 选出字体
  6 位图 CBitmap
    6.1 加载位图
    6.2 创建一个当前DC湘匹配的DC
    6.3 将位图放入DC
    6.4 绘制DC
    6.5 选出位图
    6.6 删除DC
    6.7 注意:
      使用LoadImage函数加载BMP格式图片